home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / sbin / MAKEDEV < prev    next >
Text File  |  2008-05-09  |  53KB  |  2,216 lines

  1. #! /bin/sh -
  2. # $Id$
  3.  
  4. #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
  5. # Customisation:
  6. #   The devices fall into various classes.  This section contains the mapping
  7. # from a class name into a group name and permission.
  8. #   You will almost certainly need to edit the group name to match your
  9. # system, and you may change the permissions to suit your preference.  These
  10. # lines _must_ be of the format "user group perm".
  11.  
  12.  public="  root root   0666"
  13. private="  root root   0600"
  14.  system="  root root   0660"
  15.    kmem="  root kmem   0640"
  16.     tty="  root tty    0666"
  17.    cons="  root tty    0600"
  18. dialout="  root dialout 0660"
  19.     dip="  root dip    0660"
  20.   mouse="  root root   0660"
  21. printer="  root lp     0660"
  22.  floppy="  root floppy 0660"
  23.    disk="  root disk   0660"
  24.    scsi="  root root   0600"
  25.   cdrom="  root cdrom  0660"
  26.    tape="  root tape   0660"
  27.   audio="  root audio  0660"
  28.   video="  root video  0660"
  29.   ibcs2="  root root   0666"
  30. scanner="  root root   0666"
  31.    coda="  root root   0600"
  32.   ipsec="  root root   0200"
  33. readable="  root root   0444"
  34.    lirc="  root video   0640"
  35.  
  36. MAXVT=63
  37.  
  38. # defaults for $major_*
  39. major_ide0=3
  40. major_ide1=22
  41. major_sd=8
  42. major_lp=6
  43.  
  44. # Remark: OSS/Linux becomes major_OSSLinux
  45.  
  46. #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
  47.  
  48. # try to do the right things if udev is running
  49. if [ "$WRITE_ON_UDEV" ]; then
  50.   :
  51. elif [ -d /dev/.static/dev/ ] && [ "`pwd`" = /dev ] && [ -e /proc/mounts ] \
  52.     && grep -qE '^[^ ]+ /dev/\.static/dev' /proc/mounts; then
  53.   echo "udev active, devices will be created in /dev/.static/dev/"
  54.   cd /dev/.static/dev/
  55. elif [ -d /.dev/ ] && [ "`pwd`" = /dev ] && [ -e /proc/mounts ] \
  56.     && grep -qE '^[^ ]+ /\.dev' /proc/mounts; then
  57.   echo "udev active, devices will be created in /.dev/"
  58.   cd /.dev/
  59. elif [ -d .udevdb/ -o -d .udev/ ] && [ "`pwd`" = /dev ]; then
  60.   echo ".udevdb or .udev presence implies active udev.  Aborting MAKEDEV invocation."
  61.   # use exit 0, not 1, so postinst scripts don't fail on this
  62.   exit 0
  63. fi
  64.  
  65. #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
  66.  
  67. # don't stomp on devfs users
  68. if  [ -c .devfsd ]
  69. then
  70.     echo ".devfsd presence implies active DevFS.  Aborting MAKEDEV invocation."
  71.     # use exit 0, not 1, so postinst scripts don't fail on this
  72.     exit 0
  73. fi
  74.  
  75. #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
  76.  
  77. # don't stomp on non-Linux users
  78. if [ "$(uname -s)" != "Linux" ]
  79. then
  80.     echo "Results undefined on non-Linux systems, aborting MAKEDEV invocation."
  81.     # use exit 0, not 1, so postinst scripts don't fail on this
  82.     exit 0
  83. fi
  84.  
  85. #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
  86.  
  87. procfs=/proc
  88.  
  89. opt_v=
  90. opt_d=
  91. opt_n=
  92.  
  93. while [ $# -ge 1 ]
  94. do
  95.     case $1 in
  96.         --)    shift; break ;;
  97.         -v)    shift; opt_v=1 ;;
  98.         -d)    shift; opt_d=1 ;;
  99.         -n)    shift; opt_n=1; opt_v=1 ;;
  100.         -V)    shift; opt_V=1 ;;
  101.         -*)    echo "$0: unknown flag \"$1\"" >&2; exit 1 ;;
  102.         *)    break ;;
  103.     esac
  104. done
  105.  
  106. if [ "$opt_V" ]
  107. then
  108.     echo "This is Debian MAKEDEV.  For version info, try 'dpkg --list makedev'"
  109.     echo "See /usr/share/doc/makedev/ for more information on Debian MAKEDEV."
  110.     exit 0
  111. fi
  112.  
  113. opts="${opt_n:+-n} ${opt_v:+-v} ${opt_d:+-d}"
  114.  
  115. #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
  116.  
  117. devicename () {    # translate device names to something safe
  118.     # A-Z is not full alphabet in all locales (e.g. in et_EE)
  119.     echo "$*" | LC_ALL=C sed -e 's/[^A-Za-z0-9_]/_/g' 
  120. }
  121.  
  122. makedev () {    # usage: makedev name [bcu] major minor owner group mode
  123.     if [ "$opt_v" ]
  124.     then    if [ "$opt_d" ]
  125.         then    echo "delete $1"
  126.         else    echo "create $1    $2 $3 $4 $5:$6 $7" 
  127.         fi
  128.     fi
  129.     # missing parameters are a bug - bail - should we do an exit 1 here?
  130.     case :$1:$2:$3:$4:$5:$6:$7: in
  131.         *::*) echo "Warning: MAKEDEV $@ is missing parameter(s)." >&2;;
  132.     esac
  133.     if [ ! "$opt_n" ]
  134.     then    
  135.         if [ "$opt_d" ]
  136.         then
  137.             rm -f $1
  138.         else
  139.             rm -f $1-
  140.             if mknod $1- $2 $3 $4 &&
  141.                chown $5:$6 $1- &&
  142.                chmod $7 $1- &&
  143.                mv $1- $1
  144.             then
  145.                 :    # it worked
  146.             else
  147.                     # Didn't work, clean up any mess...
  148.                 echo "makedev $@: failed"
  149.                 rm -f $1-
  150.             fi
  151.         fi
  152.     fi
  153. }
  154. makefifo () { # usage: makefifo name owner group mode
  155.     if [ "$opt_v" ]
  156.     then    if [ "$opt_d" ]
  157.         then    echo "delete $1"
  158.         else    echo "create $1 $2:$3 $4" 
  159.         fi
  160.     fi
  161.     # missing parameters are a bug - bail - should we do an exit 1 here?
  162.     case :$1:$2:$3:$4: in
  163.         *::*) echo "Warning: MAKEFIFO $@ is missing parameter(s)." >&2;;
  164.     esac
  165.     if [ ! "$opt_n" ]
  166.     then    
  167.         if [ "$opt_d" ]
  168.         then
  169.             rm -f $1
  170.         else
  171.             rm -f $1-
  172.             if mknod $1- p &&
  173.                chown $2:$3 $1- &&
  174.                chmod $4 $1- &&
  175.                mv $1- $1
  176.             then
  177.                 :    # it worked
  178.             else
  179.                     # Didn't work, clean up any mess...
  180.                 echo "makefifo $@: failed"
  181.                 rm -f $1-
  182.             fi
  183.         fi
  184.     fi
  185. }
  186. symlink () {    # usage: symlink name target
  187.     if [ "$opt_v" ]
  188.     then    if [ "$opt_d" ]
  189.         then    echo "delete $1"
  190.         else    echo "create $1    -> $2"
  191.         fi
  192.     fi
  193.     [ ! "$opt_n" ] && rm -f $1 &&
  194.     [ ! "$opt_d" ] && ln -s $2 $1
  195. }
  196.  
  197. #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
  198.  
  199. # Debian allows us to assume /bin/sh is a POSIX compliant shell, so go for it!
  200.  
  201. math () {
  202.     eval echo "\$(($*))"
  203. }
  204. index () {    # index string c
  205.     eval "I=\${1%$2*}"
  206.     eval echo "\${#I}"
  207. }
  208. suffix () {
  209.     eval echo "\${1#$2}"
  210. }
  211. strip () {
  212.     eval echo "\${1% $2 *} \${1#* $2 }"
  213. }
  214. first () {
  215.     echo "${1%%?}"
  216. }
  217. second () {
  218.     echo "${1##?}"
  219. }
  220. substr () {
  221.     echo $1 | dd bs=1 count=1 skip=$(( $2 - 1 )) 2> /dev/null
  222. }
  223.  
  224. #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
  225.  
  226. devices=
  227. if [ ! -f $procfs/devices ]
  228. then
  229.     echo "$0: warning: can't read $procfs/devices" >&2
  230. else
  231.     exec 3<$procfs/devices
  232.     while read major device extra <&3
  233.     do
  234.         device=`echo $device | sed 's#/.*##'`
  235.         case "$major" in
  236.             Character|Block|'')
  237.                 ;;
  238.             *)
  239.                 safedevname=`devicename $device`
  240.                 eval "major_$safedevname=$major"
  241.                 devices="$devices $device"
  242.                 ;;
  243.         esac
  244.     done
  245.     exec 3<&-
  246. fi
  247.  
  248. Major () {
  249.     device=$2
  250.     devname=`devicename $1`
  251.     if [ "$opt_d" ]
  252.     then
  253.         echo -1    # don't care
  254.     else
  255.         eval echo \${major_$devname:-\${device:?\"unknown major number for $1\"}}
  256.     fi
  257. }
  258.  
  259. cvt () {
  260.     while [ $# -ne 0 ]
  261.     do
  262.         case "$1" in
  263.             mem|tty|ttyp|cua|cub|cui)    ;;
  264.             hd)    (for d in a b c d e f g h i j k l m n o p ; do
  265.                     echo -n hd$d " "
  266.                  done) ; echo
  267.                 ;;
  268.             ide0)    echo hda hdb ;;
  269.             ide1)    echo hdc hdd ;;
  270.             ide2)    echo hde hdf ;;
  271.             ide3)    echo hdg hdh ;;
  272.             ide4)    echo hdi hdj ;;
  273.             ide5)    echo hdk hdl ;;
  274.             ide6)    echo hdm hdn ;;
  275.             ide7)    echo hdo hdp ;;
  276.             ide8)    echo hdq hdr ;;
  277.             ide9)    echo hds hdt ;;
  278.             sd)    (for d in a b c d e f g h i j k l m n o p ; do
  279.                     echo -n sd$d " "
  280.                  done) ; echo
  281.                 ;;
  282.             dasd)   (for d in a b c d e f g h i j k l m \
  283.                     n o p q r s t u v w x y z ; do
  284.                     echo -n dasd$d " "
  285.                 done) ; echo
  286.                 ;;
  287.             raw)    echo raw ;;
  288.             sg)    echo sg ;;
  289.             sr)    echo scd ;;
  290.             st)    echo st0 ;;
  291.             xd)    echo xda xdb ;;
  292.             ad)    echo ada adb ;;
  293.             lp)    echo lp ;;
  294.             mt)    echo ftape ;;
  295.             qft)    echo ftape ;;
  296.             loop)    echo loop ;;
  297.             md)    echo md ;;
  298.             ibcs2)    echo ibcs2 ;;
  299.             tpqic02)    echo qic ;;
  300.             sound)        echo audio ;;
  301.             logiscan)    echo logiscan ;;
  302.             ac4096)        echo ac4096 ;;
  303.             hw)    echo helloworld ;;
  304.             sbpcd | sbpcd[123])    echo $1 ;;
  305.             joystick)    echo js ;;
  306.             input)    echo input ;;
  307.             apm_bios)    echo apm ;;
  308.             dcf)        echo dcf ;;
  309.             aztcd)        echo aztcd ;;
  310.             cm206cd)    echo cm206cd ;;
  311.             gscd)        echo gscd ;;
  312.             pcmcia)    ;; # taken care of by its own driver
  313.             ttyC)    echo cyclades ;;
  314.             isdn)    echo isdnmodem isdnbri dcbri ;;
  315.             vcs)    ;;
  316.             pty)    echo pty ;;
  317.             misc)    echo misc ;;
  318.             3dfx)    echo 3dfx ;;
  319.             agpgart)    echo agpgart ;;
  320.             microcode)    echo microcode ;;
  321.             ipmi|ipmikcs)    echo ipmi ;;
  322.             fb)    echo fb ;;
  323.             nb|drbd)    echo nb0 nb1 nb2 nb3 nb4 nb5 nb6 nb7;;
  324.             netlink)    echo netlink ;;
  325.             tap)    echo netlink ;;
  326.             hamradio)    echo hamradio ;;
  327.             snd)    ;;
  328.             ptm)    ;;
  329.             pts)    ;;
  330.             ttyB)    (for l in 0 1 2 3 4 5 6 7 ; do
  331.                     echo -n ttyB$l " "
  332.                  done) ; echo
  333.                 ;;
  334.             ttyS)    echo ttyS0 ttyS1 ttyS2 ttyS3 ttyS4 ;;
  335.             ttyI)    echo ttyI0 ttyI1 ttyI2 ttyI3 ;;
  336.             ircomm|irlpt)    irda ;;
  337.             ppp)    echo ppp ;;
  338.             usb)    echo usb ;;
  339.             dpt_i2o)    echo dpti ;;
  340.             bluetooth)    echo bluetooth ;;
  341.             lvm)    ;; # taken care of by LVM userspace tools
  342.             ramdisk)    echo ram ;;
  343.             null)    echo std ;;
  344.             zero)    echo std ;;
  345. #            *)    echo "$0: don't know what \"$1\" is" >&2 ;;
  346.             *)    echo $1
  347.         esac
  348.         shift
  349.     done
  350. }
  351.  
  352. for arg in `cvt $*`
  353. do
  354.     # this is to make the case patterns work as expected in all locales
  355.     LC_ALL=C
  356.     case $arg in
  357.     generic)
  358.         # pick the right generic-<arch> using dpkg's knowledge
  359.         case `dpkg --print-installation-architecture` in
  360.             alpha)
  361.                 $0 $opts generic-alpha
  362.                 ;;
  363.             arm|armeb|armel)
  364.                 $0 $opts generic-arm
  365.                 ;;
  366.             hppa)
  367.                 $0 $opts generic-hppa
  368.                 ;;
  369.             i386|lpia)
  370.                 $0 $opts generic-i386
  371.                 ;;
  372.             amd64)
  373.                 $0 $opts generic-i386
  374.                 ;;
  375.             ia64)
  376.                 $0 $opts generic-ia64
  377.                 ;;
  378.             m68k)
  379.                 $0 $opts generic-m68k
  380.                 ;;
  381.             mips)
  382.                 $0 $opts generic-mips
  383.                 ;;
  384.             mipsel)
  385.                 $0 $opts generic-mipsel
  386.                 ;;
  387.             powerpc)
  388.                 $0 $opts generic-powerpc
  389.                 ;;
  390.             ppc64)
  391.                 $0 $opts generic-powerpc
  392.                 ;;
  393.             s390)
  394.                 $0 $opts generic-s390
  395.                 ;;
  396.             sh*)    
  397.                 $0 $opts generic-sh
  398.                 ;;
  399.             sparc)
  400.                 $0 $opts generic-sparc
  401.                 ;;
  402.             *)
  403.                 echo "$0: no support for generic on this arch" >&2
  404.                 exit 1
  405.                 ;;
  406.         esac
  407.         ;;
  408.     generic-alpha)
  409.         $0 $opts std
  410.         $0 $opts fd
  411.         $0 $opts fd0 fd1
  412.         $0 $opts hd sd
  413.         $0 $opts xda xdb
  414.         $0 $opts scd0 scd1
  415.         $0 $opts st0 st1
  416.         $0 $opts sg
  417.         $0 $opts pty
  418.         $0 $opts console
  419.         $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4
  420.         $0 $opts busmice
  421.         $0 $opts lp
  422.         $0 $opts par
  423.         $0 $opts audio
  424.         $0 $opts fb
  425.         $0 $opts dac960
  426.         ;;
  427.     generic-arm)
  428.         $0 $opts std
  429.         $0 $opts fd
  430.         $0 $opts fd0 fd1
  431.         $0 $opts hd sd
  432.         $0 $opts xda xdb
  433.         $0 $opts scd0 scd1
  434.         $0 $opts st0 st1
  435.         $0 $opts sg
  436.         $0 $opts pty
  437.         $0 $opts console
  438.         $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4
  439.         $0 $opts busmice
  440.         makedev sunmouse  c 10 6 $mouse
  441.         $0 $opts lp
  442.         $0 $opts par
  443.         $0 $opts audio
  444.         $0 $opts fb
  445.         ;;
  446.     generic-hppa)
  447.         $0 $opts std
  448.         $0 $opts fd
  449.         $0 $opts fd0 fd1
  450.         $0 $opts hd sd
  451.         $0 $opts scd0 scd1
  452.         $0 $opts st0 st1
  453.         $0 $opts sg
  454.         $0 $opts pty
  455.         $0 $opts console
  456.         $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4
  457.         $0 $opts ttyB0 ttyB1 ttyB2 ttyB3 ttyB4 ttyB5 ttyB6 ttyB7
  458.         $0 $opts busmice
  459.         $0 $opts lp
  460.         $0 $opts par
  461.         $0 $opts audio
  462.         $0 $opts fb
  463.         $0 $opts rtc
  464.         ;;
  465.     generic-i386)
  466.         $0 $opts std
  467.         $0 $opts fd
  468.         $0 $opts fd0 fd1
  469.         $0 $opts hd sd
  470.         $0 $opts xda xdb
  471.         $0 $opts scd0 scd1
  472.         $0 $opts st0 st1
  473.         $0 $opts sg
  474.         $0 $opts pty
  475.         $0 $opts console
  476.         $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4
  477.         $0 $opts busmice
  478.         $0 $opts input
  479.         $0 $opts lp
  480.         $0 $opts par
  481.         $0 $opts audio
  482.         $0 $opts fb
  483.         $0 $opts isdn-io eda edb sonycd mcd mcdx cdu535
  484.         $0 $opts optcd sjcd cm206cd gscd 
  485.         $0 $opts lmscd sbpcd aztcd bpcd dac960 dpti ida ataraid cciss
  486.         $0 $opts i2o.hda i2o.hdb i2o.hdc i2o.hdd
  487.         ;;
  488.     generic-ia64)
  489.         $0 $opts std
  490.         $0 $opts fd
  491.         $0 $opts fd0 fd1
  492.         $0 $opts hd sd
  493.         $0 $opts scd0 scd1
  494.         $0 $opts st0 st1
  495.         $0 $opts sg
  496.         $0 $opts pty
  497.         $0 $opts console
  498.         $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4 ttyS5
  499.         $0 $opts busmice
  500.         $0 $opts input
  501.         $0 $opts lp
  502.         $0 $opts par
  503.         $0 $opts audio
  504.         $0 $opts fb
  505.         $0 $opts efirtc
  506.         ;;
  507.     generic-m68k)
  508.         $0 $opts std
  509.         $0 $opts fd
  510.         $0 $opts fd0 fd1
  511.         $0 $opts hd sd
  512.         $0 $opts scd0 scd1
  513.         $0 $opts sg
  514.         $0 $opts ada adb adc add ade adf
  515.         $0 $opts pty
  516.         $0 $opts console
  517.         $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4 ttyS5
  518.         $0 $opts m68k-mice
  519.         $0 $opts lp
  520.         $0 $opts par
  521.         $0 $opts nvram
  522.         $0 $opts audio
  523.         $0 $opts fb
  524.         ;;
  525.     generic-mips)
  526.         $0 $opts std
  527.         $0 $opts fd
  528.         $0 $opts fd0 fd1
  529.         $0 $opts hd sd
  530.         $0 $opts scd0 scd1
  531.         $0 $opts st0 st1
  532.         $0 $opts sg
  533.         $0 $opts pty
  534.         $0 $opts console
  535.         $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4
  536.         $0 $opts lp
  537.         $0 $opts par
  538.         $0 $opts audio
  539.         $0 $opts fb
  540.         $0 $opts busmice
  541.         ;;
  542.     generic-mipsel)
  543.         $0 $opts std
  544.         $0 $opts fd
  545.         $0 $opts fd0 fd1
  546.         $0 $opts hd sd
  547.         $0 $opts scd0 scd1
  548.         $0 $opts st0 st1
  549.         $0 $opts sg
  550.         $0 $opts pty
  551.         $0 $opts console
  552.         $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4
  553.         $0 $opts lp
  554.         $0 $opts par
  555.         $0 $opts audio
  556.         $0 $opts fb
  557.         $0 $opts rtc
  558.         ;;
  559.     generic-powerpc)
  560.         $0 $opts std
  561.         $0 $opts fd
  562.         $0 $opts fd0 fd1
  563.         $0 $opts hd sd
  564.         $0 $opts scd0 scd1
  565.         $0 $opts st0 st1
  566.         $0 $opts sg
  567.         $0 $opts pty
  568.         $0 $opts console
  569.         $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4
  570.         $0 $opts busmice
  571.         $0 $opts m68k-mice
  572.         $0 $opts input
  573.         $0 $opts lp
  574.         $0 $opts par
  575.         $0 $opts nvram
  576.         $0 $opts audio
  577.         $0 $opts adb
  578.         $0 $opts fb
  579.         $0 $opts rtc
  580.         $0 $opts isdn-io
  581.         ;;
  582.     generic-s390)
  583.         $0 $opts std
  584.         $0 $opts fd
  585.         $0 $opts dasda dasdb dasdc dasdd dasde dasdf dasdg dasdh \
  586.             dasdi dasdj dasdk dasdl dasdm dasdn dasdo dasdp \
  587.             dasdq dasdr dasds dasdt dasdu dasdv dasdw dasdx \
  588.             dasdy dasdz
  589.         $0 $opts pty
  590.         $0 $opts consoleonly
  591.         $0 $opts rtc
  592.         ;;
  593.     generic-sh)
  594.         $0 $opts std
  595.         $0 $opts fd
  596.         $0 $opts fd0 fd1
  597.         $0 $opts hd sd
  598.         $0 $opts scd0 scd1
  599.         $0 $opts st0 st1
  600.         $0 $opts sg
  601.         $0 $opts pty
  602.         $0 $opts console
  603.         $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4  
  604.         $0 $opts ttySC0 ttySC1 ttySC2 ttySC3 
  605.         $0 $opts lp
  606.         $0 $opts par
  607.         $0 $opts audio
  608.         $0 $opts fb
  609.         $0 $opts rtc
  610.         ;;
  611.     generic-sparc)
  612.         $0 $opts std
  613.         $0 $opts fd
  614.         $0 $opts fd0 fd1
  615.         $0 $opts hd sd
  616.         $0 $opts scd0 scd1
  617.         $0 $opts st0 st1
  618.         $0 $opts sg
  619.         $0 $opts pty
  620.         $0 $opts console
  621.         $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4
  622.         $0 $opts busmice
  623.         $0 $opts fb
  624.         $0 $opts rtc
  625.         makedev kbd  c 11 0 $cons
  626.         makedev sunmouse  c 10 6 $mouse
  627.         symlink mouse sunmouse
  628.         makedev openprom  c 10 139 root root 0664
  629.         ;;
  630.     local)
  631.         $0.local $opts
  632.         ;;
  633.     std)
  634.         makedev mem  c 1 1 $kmem
  635.         makedev kmem c 1 2 $kmem
  636.         makedev null c 1 3 $public
  637.         makedev port c 1 4 $kmem
  638.         makedev zero c 1 5 $public
  639.         symlink core $procfs/kcore
  640.         makedev full c 1 7 $public
  641.         makedev random c 1 8 $public
  642.         makedev urandom c 1 9 $public
  643.         makedev tty  c 5 0 $tty
  644.         $0 $opts ram
  645.         $0 $opts loop
  646.         ;;
  647.     hamradio)
  648.         $0 $opts scc
  649.         $0 $opts bc
  650.         ;;
  651.     scc)
  652.         for unit in 0 1 2 3 4 5 6 7 
  653.         do
  654.             makedev scc$unit c 34 $unit $system
  655.         done
  656.         ;;
  657.     mtd)    
  658.         for unit in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  659.         do
  660.             makedev mtd$unit c 90 `math $unit \* 2` $system
  661.         done
  662.         ;;
  663.     bc)    
  664.         for unit in 0 1 2 3
  665.         do
  666.             makedev bc$unit c 51 $unit $system
  667.         done
  668.         ;;
  669.     random)
  670.         makedev random c 1 8 $public
  671.         ;;
  672.     urandom)
  673.         makedev urandom c 1 9 $readable
  674.         ;;
  675.     ram)
  676.         for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ; do
  677.             makedev ram$i  b 1 $i $disk
  678.         done
  679.         symlink ram ram1
  680.         ;;
  681.     ram[0-9]|ram1[0-6])
  682.         unit=`suffix $arg ram`
  683.         makedev ram$unit b 1 $unit $disk
  684.         ;;
  685.     initrd)
  686.         makedev initrd b 1 250 $disk
  687.         ;;
  688.     raw)
  689.         makedev rawctl c 162 0 $disk
  690.         mkdir -p raw
  691.         for i in 1 2 3 4 5 6 7 8; do
  692.             makedev raw/raw$i c 162 $i $disk
  693.         done
  694.         ;;
  695.     consoleonly)
  696.         makedev tty0 c 4 0 $cons
  697.         #    new kernels need a device, old ones a symlink... sigh
  698.         kern_rev1=`uname -r | sed -e 's@^\([^.]*\)\..*@\1@'`
  699.         kern_rev2=`uname -r | sed -e 's@^[^.]*\.\([^.]*\)\..*@\1@'`
  700.         if [ $kern_rev1 -gt 2 ]
  701.         then
  702.             makedev console c 5 1 $cons
  703.         else
  704.             if [ $kern_rev1 -eq 2 ] && [ $kern_rev2 -ge 1 ]
  705.             then
  706.                 makedev console c 5 1 $cons
  707.             else
  708.                 symlink console tty0
  709.             fi
  710.         fi
  711.         ;;
  712.     console)
  713.         $0 $opts consoleonly
  714.         major=`Major vcs 7`       # not fatal
  715.         [ "$major" ] && makedev vcs0 c $major 0 $cons
  716.         symlink vcs vcs0
  717.         [ "$major" ] && makedev vcsa0 c $major 128 $cons
  718.         symlink vcsa vcsa0
  719.         # individual vts
  720.         line=1
  721.         while [ $line -le $MAXVT ] && [ $line -le 63 ]
  722.         do
  723.             makedev tty$line c 4 $line $cons
  724.             [ "$major" ] && makedev vcs$line c $major $line $cons
  725.             [ "$major" ] && makedev vcsa$line c $major `math $line + 128` $cons
  726.             line=`math $line + 1`
  727.         done
  728.         ;;
  729.     adb)
  730.         # pick the right arch device using dpkg's knowledge
  731.         case `dpkg --print-installation-architecture` in
  732.             powerpc)
  733.                 # ADB bus devices (char)
  734.                 makedev adb c 56 0 $mouse
  735.                 makedev adbmouse c 10 10 $mouse
  736.                 ;;
  737.             m68k)
  738.                 # ACSI disk 2, whole device (block)
  739.                 makedev adb b 28 16 $disk
  740.                 for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  741.                 do
  742.                     minor=$(( 16 + $part ))
  743.                     makedev adb$part b 28 $minor $disk
  744.                 done
  745.                 ;;
  746.             *)
  747.                 echo "no support for adb on this arch" >&2
  748.                 exit 1
  749.                 ;;
  750.         esac
  751.         ;;
  752.     raw1394)
  753.         makedev raw1394 c 171 0 $disk
  754.         ;;
  755.     video1394)
  756.         rm -f video1394
  757.         mkdir -p video1394
  758.         for i in `seq 0 15`
  759.         do
  760.             makedev video1394/$i c 171 `math 16 + $i` $video
  761.         done
  762.         ;;
  763.     alsa)
  764.         echo "You requested 'alsa' devices.  Please install the alsa-base package instead,"
  765.         echo "which creates and maintains device information for ALSA."
  766.         ;;
  767.     nvram)
  768.         makedev nvram c 10 144 $mouse
  769.         ;;
  770.     tty[1-9]|tty[1-5][0-9]|tty[6][0-3])
  771.         line=`suffix $arg tty`
  772.         makedev tty$line c 4 $line $cons
  773.         ;;
  774.     ttyS[0-9]|ttyS[1-5][0-9]|ttyS[6][0-3])
  775.         line=`suffix $arg ttyS`
  776.         minor=`math 64 + $line`
  777.         makedev ttyS$line c 4 $minor $dialout
  778.         ;;
  779.     ttySC[0-3])
  780.         line=`suffix $arg ttySC`
  781.         minor=`math 8 + $line`
  782.         makedev ttySC$line c 204 $minor $dialout
  783.          ;;
  784.     ttyB[0-7])
  785.         minor=`suffix $arg ttyB`
  786.         makedev ttyB$minor c 11 $minor $dialout
  787.         ;;
  788.     pty[a-ep-z])
  789.         bank=`suffix $arg pty`
  790.         base=`index pqrstuvwxyzabcde $bank`
  791.         base=`math $base \* 16`
  792.         for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f
  793.         do
  794.             j=`index 0123456789abcdef $i`
  795.             makedev pty$bank$i c 2 `math $base + $j` $tty
  796.             makedev tty$bank$i c 3 `math $base + $j` $tty
  797.         done
  798.         ;;
  799.     pty)
  800.         ptysufs=""
  801.         for i in p q r s t u v w x y z a b c d e
  802.         do
  803.             ptysufs="$ptysufs pty$i"
  804.         done
  805.         $0 $opts $ptysufs ptmx
  806.         ;;
  807.     ptmx)
  808.         # master pty multiplexer for 2.1 kernels
  809.         makedev ptmx c 5 2 $tty
  810.         ;;
  811.     cyclades|ttyC)
  812.         major1=`Major ttyC 19` || continue
  813.         #major2=`Major cub 20` || continue
  814.         for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 \
  815.               16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 
  816.         do
  817.             makedev ttyC$i c $major1 $i $dialout
  818.             #makedev cub$i c $major2 $i $dialout
  819.         done
  820.         ;;
  821.     stallion|ttyE)
  822.         major1=`Major ttyE 24` || continue
  823.         #major2=`Major cue 25` || continue
  824.         majorc=28
  825.         minor=0
  826.         until [ $minor -gt 256 ]
  827.         do
  828.             makedev ttyE$minor c $major1 $minor $dialout
  829.             #makedev cue$minor c $major2 $minor $dialout
  830.             minor=`math $minor + 1`
  831.         done
  832.         for i in 0 1 2 3
  833.         do
  834.             makedev staliomem$i c $majorc $i $private
  835.         done
  836.         ;;
  837.     chase|ttyH)
  838.         major1=`Major ttyH 17` || continue
  839.         #major2=`Major cuh 18` || continue
  840.         minor=0
  841.         until [ $minor -gt 16 ] # tell me if 16 is wrong
  842.         do
  843.             makedev ttyH$minor c $major1 $minor $dialout
  844.             #makedev cuh$minor c $major2 $minor $dialout
  845.             minor=`math $minor + 1`
  846.         done
  847.         ;;
  848.     rocketport|ttyR)
  849.         major1=`Major ttyR 46` || continue
  850.         #major2=`Major cur 47` || continue
  851.         minor=0
  852.         until [ $minor -gt 64 ] # tell me if 64 is wrong
  853.         do
  854.             makedev ttyR$minor c $major1 $minor $dialout
  855.             #makedev cur$minor c $major2 $minor $dialout
  856.             minor=`math $minor + 1`
  857.         done
  858.         ;;
  859.     ttyV)
  860.         major1=`Major ttyV 105` || continue
  861.         #major2=`Major cuv 106` || continue
  862.         minor=0
  863.         until [ $minor -gt 16 ] # tell me if 16 is wrong
  864.         do
  865.             makedev ttyV$minor c $major1 $minor $dialout
  866.             #makedev cuv$minor c $major2 $minor $dialout
  867.             minor=`math $minor + 1`
  868.         done
  869.         ;;
  870.     digi|ttyD)
  871.         major1=`Major ttyD 22` || continue
  872.         #major2=`Major cud 23` || continue
  873.         minor=0
  874.         until [ $minor -gt 16 ] # tell me if 16 is wrong
  875.         do
  876.             makedev ttyD$minor c $major1 $minor $dialout
  877.             #makedev cud$minor c $major2 $minor $dialout
  878.             minor=`math $minor + 1`
  879.         done
  880.         ;;
  881.     specialix|ttyX)
  882.         major1=`Major ttyX 32` || continue
  883.         #major2=`Major cux 33` || continue
  884.         minor=0
  885.         until [ $minor -gt 16 ] # tell me if 16 is wrong
  886.         do
  887.             makedev ttyX$minor c $major1 $minor $dialout
  888.             #makedev cux$minor c $major2 $minor $dialout
  889.             minor=`math $minor + 1`
  890.         done
  891.         ;;
  892.     specialixIO8|ttyW)
  893.         major1=`Major ttyW 75` || continue
  894.         #major2=`Major cuw 76` || continue
  895.         minor=0
  896.         until [ $minor -gt 16 ] # tell me if 16 is wrong
  897.         do
  898.             makedev ttyW$minor c $major1 $minor $dialout
  899.             #makedev cuw$minor c $major2 $minor $dialout
  900.             minor=`math $minor + 1`
  901.         done
  902.         ;;
  903.     PAM|ttyM)
  904.         major1=`Major ttyM 79` || continue
  905.         #major2=`Major cum 80` || continue
  906.         minor=0
  907.         until [ $minor -gt 16 ] # tell me if 16 is wrong
  908.         do
  909.             makedev ttyM$minor c $major1 $minor $dialout
  910.             #makedev cum$minor c $major2 $minor $dialout
  911.             minor=`math $minor + 1`
  912.         done
  913.         ;;
  914.     riscom|ttyL)
  915.         major=`Major ttyL 48` || continue
  916.         minor=0
  917.         until [ $minor -gt 16 ] # tell me if 16 is wrong
  918.         do
  919.             makedev ttyL$minor c $major $minor $dialout
  920.             minor=`math $minor + 1`
  921.         done
  922.         ;;
  923.     computone|ttyF)
  924.         major=`Major ttyF 71` || continue
  925.         #major2=`Major cuf 72` || continue
  926.         minor=0
  927.         until [ $minor -gt 255 ]
  928.         do
  929.             makedev ttyF$minor c $major $minor $dialout
  930.             #makedev cuf$minor c $major2 $minor $dialout
  931.             minor=`math $minor + 1`
  932.         done
  933.         major=73
  934.         for i in 0 4 8 12
  935.         do
  936.             makedev ip2ipl$i  c $major $i $private
  937.             makedev ip2stat$i c $major `math $i + 1` $private
  938.         done
  939.         ;;
  940.     ESP|ttyP)
  941.         major=`Major ttyP 57` || continue
  942.         #major2=`Major cup 58` || continue
  943.         minor=0
  944.         until [ $minor -gt 4 ] # tell me if 4 is wrong
  945.         do
  946.             makedev ttyP$minor c $major $minor $dialout
  947.             #makedev cup$minor c $major2 $minor $dialout
  948.             minor=`math $minor + 1`
  949.         done
  950.         ;;
  951.     COMX|comx)
  952.         major=`Major comx 88` || continue
  953.         minor=0
  954.         until [ $minor -gt 4 ] # tell me if 4 is wrong
  955.         do
  956.             makedev comx$minor c $major $minor $private
  957.             minor=`math $minor + 1`
  958.         done
  959.         ;;
  960.     isdnmodem|ttyI)
  961.         major1=`Major ttyI 43` || continue
  962.         #major2=`Major cui 44` || continue
  963.         minor=0
  964.         until [ $minor -gt 63 ]
  965.         do
  966.             makedev ttyI$minor c $major1 $minor $dialout
  967.             #makedev cui$minor c $major2 $minor $dialout
  968.             minor=`math $minor + 1`
  969.         done
  970.         ;;
  971.     isdnbri)
  972.         major=45
  973.         minor=0
  974.         until [ $minor -gt 63 ]
  975.         do
  976.             makedev isdn$minor c $major $minor $dialout
  977.             makedev isdnctrl$minor c $major `math $minor + 64` $dialout
  978.             makedev ippp$minor c $major `math $minor + 128` $dialout
  979.             minor=`math $minor + 1`
  980.         done
  981.         makedev isdninfo c $major 255 $private
  982.         ;;
  983.     dcbri)
  984.         major=52
  985.         for i in 0 1 2 3
  986.         do
  987.             makedev dcbri$i c $major $i $dialout
  988.         done
  989.         ;;
  990.     capi)
  991.         major=68
  992.         makedev capi20 c $major 0 $dialout
  993.         for i in 0 1 2 3 4 5 6 7 8 9
  994.         do
  995.             makedev capi20.0$i c $major `math $i + 1` $dialout
  996.         done
  997.         for i in 10 11 12 13 14 15 16 17 18 19
  998.         do
  999.             makedev capi20.$i c $major `math $i + 1` $dialout
  1000.         done
  1001.         ;;
  1002.     ubd)
  1003.         major=98
  1004.         for devicenum in 0 1 2 3 4 5 6 7
  1005.         do
  1006.             device=ubd`substr abcdefgh $(($devicenum + 1))`
  1007.             baseminor=`math $devicenum \* 16`
  1008.             makedev $device b $major $baseminor $disk
  1009.             for partition in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  1010.             do
  1011.                 minor=`math $baseminor + $partition`
  1012.                 makedev $device$partition b $major $minor $disk
  1013.             done
  1014.         done
  1015.         ;;
  1016.     fb)
  1017.         for i in 0 1 2 3 4 5 6 7
  1018.         do
  1019.             makedev fb$i c 29 $i $video
  1020.         done
  1021.         ;;
  1022.     fb[0-7])
  1023.         dev=`suffix $arg fb`
  1024.         makedev fb$dev c 29 $dev $video
  1025.         ;;
  1026.     netlink|tap|tap[0-9]|tap1[0-5])
  1027.         makedev route     c 36 0 $coda
  1028.         makedev skip      c 36 1 $coda
  1029.         makedev fwmonitor c 36 3 $coda
  1030.         for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  1031.         do
  1032.             makedev tap$i c 36 `math $i + 16` $coda
  1033.         done
  1034.         ;;
  1035.     tun)
  1036.         mkdir -p net
  1037.         makedev net/tun c 10 200 $system
  1038.         ;;
  1039.     lp)
  1040.         major=`Major lp 6` || continue
  1041.         makedev ${arg}0 c $major 0 $printer
  1042.         makedev ${arg}1 c $major 1 $printer
  1043.         makedev ${arg}2 c $major 2 $printer
  1044.         ;;
  1045.     par)
  1046.         major=`Major lp 6` || continue
  1047.         makedev ${arg}0 c $major 0 $printer
  1048.         makedev ${arg}1 c $major 1 $printer
  1049.         makedev ${arg}2 c $major 2 $printer
  1050.         ;;
  1051.     parport)
  1052.         major=`Major parport 99` || continue
  1053.         makedev ${arg}0 c $major 0 $printer
  1054.         makedev ${arg}1 c $major 1 $printer
  1055.         makedev ${arg}2 c $major 2 $printer
  1056.         ;;
  1057.     slm)
  1058.         major=`Major slm 28` || continue
  1059.         for i in 0 1 2 3
  1060.         do
  1061.             makedev slm c $major $i $printer
  1062.         done
  1063.         ;;
  1064.     input)
  1065.         major=`Major pcsp 13` || continue
  1066.         mkdir -p input
  1067.         for i in 0 1 2 3
  1068.         do
  1069.             makedev input/js$i c $major $i $mouse
  1070.             makedev input/mouse$i c $major `math $i + 32` $mouse
  1071.             makedev input/event$i c $major `math $i + 64` $mouse
  1072.         done
  1073.         makedev input/mice c $major 63 $mouse
  1074.         ;;
  1075.     busmice)
  1076.         major=`Major mouse 10` || continue
  1077.         makedev logibm      c $major 0 $mouse
  1078.         makedev psaux     c $major 1 $mouse
  1079.         makedev inportbm  c $major 2 $mouse
  1080.         makedev atibm     c $major 3 $mouse
  1081.         makedev jbm       c $major 4 $mouse
  1082.         ;;
  1083.     m68k-mice)
  1084.         major=`Major mouse 10` || continue
  1085.         makedev amigamouse c $major 4 $mouse
  1086.         makedev atarimouse c $major 5 $mouse
  1087.         makedev amigamouse1 c $major 7 $mouse
  1088.         makedev adbmouse  c $major 10 $mouse
  1089.         ;;
  1090.     3dfx)
  1091.         major=`Major $arg 107` || continue
  1092.         makedev $arg    c $major 0 $video
  1093.         ;;
  1094.     agpgart)
  1095.         major=`Major $arg 10` || continue
  1096.         makedev $arg    c $major 175 $video
  1097.         ;;
  1098.     hwrng)
  1099.         major=`Major $arg 10` || continue
  1100.         makedev $arg    c $major 183 $private
  1101.         ;;
  1102.     mcelog)
  1103.         major=`Major $arg 10` || continue
  1104.         makedev $arg    c $major 227 $private
  1105.         ;;
  1106.     cpu|microcode)
  1107.         mkdir -p cpu
  1108.         makedev cpu/microcode c 10 184 $private
  1109.         for i in 0 1 2 3
  1110.         do
  1111.             mkdir -p cpu/$i
  1112.             makedev cpu/$i/msr   c 202 $i $private
  1113.             makedev cpu/$i/cpuid c 203 $i $private
  1114.         done
  1115.         ;;
  1116.     ipmi|ipmikcs)
  1117.         major=`Major ipmikcs 10` || continue
  1118.         makedev ipmikcs    c $major 173 $private
  1119.         ;;
  1120.     irda)
  1121.         for i in 0 1
  1122.         do
  1123.             makedev ircomm$i c 161 $i $dialout
  1124.             makedev irlpt$i  c 161 `math $i + 16` $printer
  1125.         done
  1126.         ;;
  1127.     irnet)
  1128.         makedev irnet c 10 187 $system
  1129.         ;;
  1130.     cbm)
  1131.         makedev cbm c 10 177 $floppy
  1132.         ;;
  1133.     misc)
  1134.         major=`Major mouse 10` || continue
  1135.         makedev logibm      c $major 0 $mouse
  1136.         makedev psaux     c $major 1 $mouse
  1137.         makedev inportbm  c $major 2 $mouse
  1138.         makedev atibm     c $major 3 $mouse
  1139.         makedev jbm       c $major 4 $mouse
  1140.         makedev amigamouse c $major 4 $mouse
  1141.         makedev atarimouse c $major 5 $mouse
  1142.         makedev sunmouse  c $major 6 $mouse
  1143.         makedev amigamouse1 c $major 7 $mouse
  1144.         makedev smouse    c $major 8 $mouse
  1145.         makedev pc110pad  c $major 9 $mouse
  1146.         makedev adbmouse  c $major 10 $mouse
  1147.         makedev beep      c $major 128 $mouse
  1148.         makedev modreq    c $major 129 $mouse
  1149.         makedev watchdog  c $major 130 $mouse
  1150.         makedev temperature c $major 131 $mouse
  1151.         makedev hwtrap    c $major 132 $mouse
  1152.         makedev exttrp    c $major 133 $mouse
  1153.         makedev apm_bios  c $major 134 $mouse
  1154.         makedev rtc       c $major 135 $mouse
  1155.         makedev openprom  c $major 139 root root 0664
  1156.         makedev relay8    c $major 140 $mouse
  1157.         makedev relay16   c $major 141 $mouse
  1158.         makedev msr       c $major 142 $mouse
  1159.         makedev pciconf   c $major 143 $mouse
  1160.         makedev nvram     c $major 144 $mouse
  1161.         makedev hfmodem   c $major 145 $mouse
  1162.         makedev led       c $major 151 $mouse
  1163.         makedev mergemem  c $major 153 $mouse
  1164.         makedev pmu       c $major 154 $mouse
  1165.         ;;
  1166.     fuse)
  1167.         makedev fuse      c 10 229 $system
  1168.         ;;
  1169.     pmu)
  1170.         major=`Major mouse 10` || continue
  1171.         makedev pmu       c $major 154 $mouse
  1172.         ;;
  1173.     thinkpad)
  1174.         major=`Major mouse 10` || continue
  1175.         mkdir -p thinkpad
  1176.         makedev thinkpad/thinkpad c $major 170 $mouse
  1177.         ;;
  1178.         rtc)
  1179.         major=`Major mouse 10` || continue
  1180.         makedev rtc       c $major 135 $mouse
  1181.         ;;
  1182.     efirtc)
  1183.         major=`Major mouse 10` || continue
  1184.         makedev efirtc    c $major 136 $mouse
  1185.          ;;
  1186.     mwave)
  1187.         makedev mwave     c 10 219 $mouse
  1188.         ;;
  1189.     systrace)
  1190.         makedev systrace  c 10 226 $private
  1191.         ;;
  1192.     uinput)
  1193.         mkdir -p input
  1194.         makedev input/uinput  c 10 223 $mouse
  1195.         ;;
  1196.     js)
  1197.         major=`Major Joystick 13` || continue
  1198.         for unit in 0 1 2 3
  1199.         do
  1200.             makedev js$unit c $major $unit $readable
  1201.             makedev djs$unit c $major `math $unit + 128` $readable
  1202.         done
  1203.         ;;
  1204.     fd[0-7])
  1205.         major=`Major fd 2` || continue
  1206.         base=`suffix $arg fd`
  1207.         if [ $base -ge 4 ]
  1208.         then
  1209.             base=`math $base + 124`
  1210.         fi
  1211.         makedev ${arg} b $major $base $floppy
  1212.         makedev ${arg}d360  b $major `math $base +  4` $floppy
  1213.         makedev ${arg}h1200 b $major `math $base +  8` $floppy
  1214.         makedev ${arg}u360  b $major `math $base + 12` $floppy
  1215.         makedev ${arg}u720  b $major `math $base + 16` $floppy
  1216.         makedev ${arg}h360  b $major `math $base + 20` $floppy
  1217.         makedev ${arg}h720  b $major `math $base + 24` $floppy
  1218.         makedev ${arg}u1440 b $major `math $base + 28` $floppy
  1219.         makedev ${arg}u2880 b $major `math $base + 32` $floppy
  1220.         makedev ${arg}CompaQ b $major `math $base + 36` $floppy
  1221.  
  1222.         makedev ${arg}h1440 b $major `math $base + 40` $floppy
  1223.         makedev ${arg}u1680 b $major `math $base + 44` $floppy
  1224.         makedev ${arg}h410  b $major `math $base + 48` $floppy
  1225.         makedev ${arg}u820  b $major `math $base + 52` $floppy
  1226.         makedev ${arg}h1476 b $major `math $base + 56` $floppy
  1227.         makedev ${arg}u1722 b $major `math $base + 60` $floppy
  1228.         makedev ${arg}h420  b $major `math $base + 64` $floppy
  1229.         makedev ${arg}u830  b $major `math $base + 68` $floppy
  1230.         makedev ${arg}h1494 b $major `math $base + 72` $floppy
  1231.         makedev ${arg}u1743 b $major `math $base + 76` $floppy
  1232.         makedev ${arg}h880  b $major `math $base + 80` $floppy
  1233.         makedev ${arg}u1040 b $major `math $base + 84` $floppy
  1234.         makedev ${arg}u1120 b $major `math $base + 88` $floppy
  1235.         makedev ${arg}h1600 b $major `math $base + 92` $floppy
  1236.         makedev ${arg}u1760 b $major `math $base + 96` $floppy
  1237.         makedev ${arg}u1920 b $major `math $base + 100` $floppy
  1238.         makedev ${arg}u3200 b $major `math $base + 104` $floppy
  1239.         makedev ${arg}u3520 b $major `math $base + 108` $floppy
  1240.         makedev ${arg}u3840 b $major `math $base + 112` $floppy
  1241.         makedev ${arg}u1840 b $major `math $base + 116` $floppy
  1242.         makedev ${arg}u800  b $major `math $base + 120` $floppy
  1243.         makedev ${arg}u1600 b $major `math $base + 124` $floppy
  1244.         ;;
  1245.     ed[a-b])
  1246.         major=`Major ed 36` || continue
  1247.         unit=`suffix $arg ed`
  1248.         base=`index ab $unit`
  1249.         base=`math $base \* 64`
  1250.         makedev ed$unit b $major $base $disk
  1251.         for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16 17 18 19 20
  1252.         do
  1253.             makedev ed$unit$part b $major `math $base + $part` $disk
  1254.         done
  1255.         ;;
  1256.     hd[a-b])
  1257.         major=`Major ide0` || major=`Major hd 3` || continue
  1258.         unit=`suffix $arg hd`
  1259.         base=`index ab $unit`
  1260.         base=`math $base \* 64`
  1261.         makedev hd$unit b $major $base $disk
  1262.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
  1263.         do
  1264.             makedev hd$unit$part b $major `math $base + $part` $disk
  1265.         done
  1266.         ;;
  1267.     hd[c-d])
  1268.         major=`Major ide1 22` || continue
  1269.         unit=`suffix $arg hd`
  1270.         base=`index cd $unit`
  1271.         base=`math $base \* 64`
  1272.         makedev hd$unit b $major $base $disk
  1273.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
  1274.         do
  1275.             makedev hd$unit$part b $major $(( $base + $part )) $disk
  1276.         done
  1277.         ;;
  1278.     hd[e-f])
  1279.         major=`Major ide2 33` || continue
  1280.         unit=`suffix $arg hd`
  1281.         base=`index ef $unit`
  1282.         base=`math $base \* 64`
  1283.         makedev hd$unit b $major $base $disk
  1284.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
  1285.         do
  1286.             makedev hd$unit$part b $major $(( $base + $part )) $disk
  1287.         done
  1288.         ;;
  1289.     hd[g-h])
  1290.         major=`Major ide3 34` || continue
  1291.         unit=`suffix $arg hd`
  1292.         base=`index gh $unit`
  1293.         base=`math $base \* 64`
  1294.         makedev hd$unit b $major $base $disk
  1295.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
  1296.         do
  1297.             makedev hd$unit$part b $major $(( $base + $part )) $disk
  1298.         done
  1299.         ;;
  1300.     hd[i-j])
  1301.         major=`Major ide4 56` || continue
  1302.         unit=`suffix $arg hd`
  1303.         base=`index ij $unit`
  1304.         base=`math $base \* 64`
  1305.         makedev hd$unit b $major $base $disk
  1306.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
  1307.         do
  1308.             makedev hd$unit$part b $major $(( $base + $part )) $disk
  1309.         done
  1310.         ;;
  1311.     hd[k-l])
  1312.         major=`Major ide5 57` || continue
  1313.         unit=`suffix $arg hd`
  1314.         base=`index kl $unit`
  1315.         base=`math $base \* 64`
  1316.         makedev hd$unit b $major $base $disk
  1317.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
  1318.         do
  1319.             makedev hd$unit$part b $major $(( $base + $part )) $disk
  1320.         done
  1321.         ;;
  1322.     hd[m-n])
  1323.         major=`Major ide6 88` || continue
  1324.         unit=`suffix $arg hd`
  1325.         base=`index mn $unit`
  1326.         base=`math $base \* 64`
  1327.         makedev hd$unit b $major $base $disk
  1328.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
  1329.         do
  1330.             makedev hd$unit$part b $major $(( $base + $part )) $disk
  1331.         done
  1332.         ;;
  1333.     hd[o-p])
  1334.         major=`Major ide7 89` || continue
  1335.         unit=`suffix $arg hd`
  1336.         base=`index op $unit`
  1337.         base=`math $base \* 64`
  1338.         makedev hd$unit b $major $base $disk
  1339.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
  1340.         do
  1341.             makedev hd$unit$part b $major $(( $base + $part )) $disk
  1342.         done
  1343.         ;;
  1344.     hd[q-r])
  1345.         major=`Major ide8 90` || continue
  1346.         unit=`suffix $arg hd`
  1347.         base=`index qr $unit`
  1348.         base=`math $base \* 64`
  1349.         makedev hd$unit b $major $base $disk
  1350.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
  1351.         do
  1352.             makedev hd$unit$part b $major $(( $base + $part )) $disk
  1353.         done
  1354.         ;;
  1355.     hd[s-t])
  1356.         major=`Major ide9 91` || continue
  1357.         unit=`suffix $arg hd`
  1358.         base=`index st $unit`
  1359.         base=`math $base \* 64`
  1360.         makedev hd$unit b $major $base $disk
  1361.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
  1362.         do
  1363.             makedev hd$unit$part b $major $(( $base + $part )) $disk
  1364.         done
  1365.         ;;
  1366.     ub|uba)    
  1367.         major=180
  1368.         makedev uba b $major 0 $disk
  1369.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  1370.         do
  1371.             makedev uba$part b $major $part $disk
  1372.         done
  1373.         ;;
  1374.     ht0)
  1375.         major=`Major ht0 37` || continue
  1376.         # Only one IDE tape drive is currently supported; ht0.
  1377.         makedev ht0 c $major 0 $tape
  1378.         makedev nht0 c $major 128 $tape
  1379.         ;;
  1380.     pt)
  1381.         major=`Major pt 96` || continue
  1382.         for i in 0 1 2 3
  1383.         do
  1384.             makedev pt$i c $major $i $tape
  1385.             makedev npt$i c $major `math $i + 128` $tape
  1386.         done
  1387.         ;;
  1388.     xd[a-d])
  1389.         major=`Major xd 13` || continue
  1390.         unit=`suffix $arg xd`
  1391.         base=`index abcd $unit`
  1392.         base=`math $base \* 64`
  1393.         makedev xd$unit b $major $base $disk
  1394.         for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16 17 18 19 20
  1395.         do
  1396.             makedev xd$unit$part b $major $(( $base + $part )) $disk
  1397.         done
  1398.         ;;
  1399.     sd[a-z])
  1400.         major=`Major sd 8` || continue
  1401.         unit=`suffix $arg sd`
  1402.         base=`index abcdefghijklmnopqrstuvwxyz $unit`
  1403.         base=$(( $base * 16 ))
  1404.         if [ $base -lt 256 ]; then
  1405.             major=8
  1406.         else
  1407.             major=65
  1408.             base=$(( $base - 256 ))
  1409.         fi
  1410.         makedev sd$unit b $major $base $disk
  1411.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  1412.         do
  1413.             minor=$(( $base + $part ))
  1414.             makedev sd$unit$part b $major $minor $disk
  1415.         done
  1416.         ;;
  1417.     sd[a-d][a-z])
  1418.         unit=`suffix $arg sd`
  1419.         unitmaj=`first $unit`
  1420.         unitmin=`second $unit`
  1421.         basemaj=`index Xabcd $unitmaj`
  1422.         basemin=`index abcdefghijklmnopqrstuvwxyz $unitmin`
  1423.         basemaj=`math $basemaj \* 416`
  1424.         basemin=`math $basemin \* 16`
  1425.         base=`math $basemaj + $basemin`
  1426.         basemaj=`math $base / 256`
  1427.         base=`math $base % 256`
  1428.         major=`math basemaj \+ 64`
  1429.         if [ $major -gt 71 ]; then
  1430.             echo "$0: don't know how to make device \"$arg\"" >&2
  1431.             exit 0
  1432.         fi
  1433.         makedev sd$unit b $major $base $disk
  1434.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  1435.         do
  1436.             minor=$(( $base + $part ))
  1437.             makedev sd$unit$part b $major $minor $disk
  1438.         done
  1439.                 ;;
  1440.     i2o.hd[a-z])
  1441.         [ -d i2o ] || {
  1442.             mkdir i2o
  1443.             chown root:root i2o
  1444.             chmod 755 i2o
  1445.                   [ -e i2o/ctl ] || makedev i2o/ctl c 10 166 $disk
  1446.         }
  1447.         unit=`suffix $arg i2o.hd`
  1448.         base=`index abcdefghijklmnopqrstuvwxyz $unit`
  1449.         base=$(( $base * 16 ))
  1450.         if [ $base -lt 256 ]; then
  1451.             major=80
  1452.         else
  1453.             major=81
  1454.             base=$(( $base - 256 ))
  1455.         fi
  1456.         makedev i2o/hd$unit b $major $base $disk
  1457.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  1458.         do
  1459.             minor=$(( $base + $part ))
  1460.             makedev i2o/hd$unit$part b $major $minor $disk
  1461.         done
  1462.         ;;
  1463.     i2o.hd[a-d][a-z])
  1464.         [ -d i2o ] || {
  1465.             mkdir i2o
  1466.             chown root:root i2o
  1467.             chmod 755 i2o
  1468.                   [ -e i2o/ctl ] || makedev i2o/ctl c 10 166 $disk
  1469.         }
  1470.         unit=`suffix $arg i2o.hd`
  1471.         unitmaj=`first $unit`
  1472.         unitmin=`second $unit`
  1473.         basemaj=`index Xabcd $unitmaj`
  1474.         basemin=`index abcdefghijklmnopqrstuvwxyz $unitmin`
  1475.         basemaj=`math $basemaj \* 416`
  1476.         basemin=`math $basemin \* 16`
  1477.         base=`math $basemaj + $basemin`
  1478.         basemaj=`math $base / 256`
  1479.         base=`math $base % 256`
  1480.         major=`math basemaj \+ 80`
  1481.         if [ $major -gt 87 ]; then
  1482.             echo "$0: don't know how to make device \"$arg\"" >&2
  1483.             exit 0
  1484.         fi
  1485.         makedev i2o/hd$unit b $major $base $disk
  1486.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  1487.         do
  1488.             minor=$(( $base + $part ))
  1489.             makedev i2o/hd$unit$part b $major $minor $disk
  1490.         done
  1491.         ;;
  1492.     dasd[a-z])
  1493.         major=`Major dasd 94` || continue
  1494.         unit=`suffix $arg dasd`
  1495.         base=`index abcdefghijklmnopqrstuvwxyz $unit`
  1496.         base=$(( $base * 4 ))
  1497.         if [ $base -lt 256 ]; then
  1498.             major=94
  1499.         else
  1500.             major=65
  1501.             base=$(( $base - 256 ))
  1502.         fi
  1503.         makedev dasd$unit b $major $base $disk
  1504.         for part in 1 2 3
  1505.         do
  1506.             minor=$(( $base + $part ))
  1507.             makedev dasd$unit$part b $major $minor $disk
  1508.         done
  1509.         ;;
  1510.     ad[a-p])
  1511.         major=`Major ad 28` || continue
  1512.         unit=`suffix $arg ad`
  1513.         base=`index abcdefghijklmnop $unit`
  1514.         base=`math $base \* 16`
  1515.         makedev ad$unit b $major $base $disk
  1516.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  1517.         do
  1518.             minor=$(( $base + $part ))
  1519.             makedev ad$unit$part b $major $minor $disk
  1520.         done
  1521.         ;;
  1522.     dac960)
  1523.         for ctr in 0 1 2 3 4 5 6 7
  1524.         do
  1525.             $0 $opts dac960.$ctr
  1526.         done
  1527.         makedev dac960_gam c 10 252 $disk
  1528.         ;;
  1529.     dac960.[0-7])
  1530.         [ -d rd ] || {
  1531.             mkdir rd
  1532.             chown root:root rd
  1533.             chmod 755 rd
  1534.         }
  1535.         unit=`suffix $arg dac960.`
  1536.             major=`math 48 + $unit`
  1537.             minor=0
  1538.             for ld in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 \
  1539.                 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
  1540.             do
  1541.             makedev rd/c${unit}d${ld} b $major $minor $disk
  1542.             minor=`math $minor + 1`
  1543.             for part in 1 2 3 4 5 6 7
  1544.             do
  1545.                 makedev rd/c${unit}d${ld}p$part b $major $minor $disk
  1546.                 minor=`math $minor + 1`
  1547.             done
  1548.             done
  1549.         ;;
  1550.     dpti)
  1551.         major=151
  1552.         for ld in 1 2 3 4 5 6 7
  1553.         do
  1554.            minor=`math $ld -1`
  1555.            makedev dpti${ld} c $major $minor $disk
  1556.                 done
  1557.                 ;;
  1558.     ataraid)
  1559.         for ctr in 0 1 2 # 3 4 5 6 7
  1560.         do
  1561.             $0 $opts ataraid.$ctr
  1562.         done
  1563.         ;;
  1564.     ataraid.[0-7])
  1565.         [ -d ataraid ] || {
  1566.             mkdir ataraid
  1567.             chown root:root ataraid
  1568.             chmod 755 ataraid
  1569.         }
  1570.                 unit=`suffix $arg ataraid.`
  1571.                 major=114
  1572.                 minor=`math $unit \* 16`
  1573.                 makedev ataraid/d${unit} b $major $minor $disk
  1574.                 for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  1575.                 do
  1576.                    minor=`math $minor + 1`
  1577.                    makedev ataraid/d${unit}p$part b $major $minor $disk
  1578.                 done
  1579.          ;;
  1580.     ida)
  1581.         for ctr in 0 1 2 # 3 4 5 6 7
  1582.         do
  1583.             $0 $opts ida.$ctr
  1584.         done
  1585.         ;;
  1586.     ida.[0-7])
  1587.         [ -d ida ] || {
  1588.             mkdir ida
  1589.             chown root:root ida
  1590.             chmod 755 ida
  1591.         }
  1592.         unit=`suffix $arg ida.`
  1593.         major=`math 72 + $unit`
  1594.         minor=0
  1595.         for ld in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  1596.         do
  1597.             makedev ida/c${unit}d${ld} b $major $minor $disk
  1598.             minor=`math $minor + 1`
  1599.             for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  1600.             do
  1601.             makedev ida/c${unit}d${ld}p$part b $major $minor $disk
  1602.             minor=`math $minor + 1`
  1603.             done
  1604.         done
  1605.         ;;
  1606.     cciss)
  1607.         for ctr in 0 1 2 # 3 4 5 6 7
  1608.         do
  1609.             $0 $opts cciss.$ctr
  1610.         done
  1611.         ;;
  1612.     cciss.[0-7])
  1613.         [ -d cciss ] || {
  1614.             mkdir cciss
  1615.             chown root:root cciss
  1616.             chmod 755 cciss
  1617.         }
  1618.         unit=`suffix $arg cciss.`
  1619.         major=`math 104 + $unit`
  1620.         minor=0
  1621.         for ld in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  1622.         do
  1623.             makedev cciss/c${unit}d${ld} b $major $minor $disk
  1624.             minor=`math $minor + 1`
  1625.             for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  1626.             do
  1627.             makedev cciss/c${unit}d${ld}p$part b $major $minor $disk
  1628.             minor=`math $minor + 1`
  1629.             done
  1630.         done
  1631.         ;;
  1632.     rom)
  1633.         major=`Major rom 31`
  1634.         for i in 0 1 2 3 4 5 6 7
  1635.         do
  1636.             makedev rom$i    b $major $i $disk
  1637.             makedev rrom$i   b $major `math $i +8` $disk
  1638.             makedev flash$i  b $major `math $i +16` $disk
  1639.             makedev rflash$i b $major `math $i +24` $disk
  1640.         done
  1641.         ;;
  1642.     nb[0-7])
  1643.         major=`Major nbd 43` || continue
  1644.         minor=`suffix $arg nb`
  1645.         makedev nb$minor b $major $minor $disk
  1646.         ;;
  1647.     loop)
  1648.         for part in 0 1 2 3 4 5 6 7
  1649.         do
  1650.             makedev loop$part b 7 $part $disk
  1651.         done
  1652.         ;;
  1653.     loop[0-9]|loop[1-9][0-9]|loop1[0-9][0-9]|loop2[0-4][0-9]|loop25[0-5])
  1654.         minor=`suffix $arg loop`
  1655.         makedev loop$minor b 7 $minor $disk
  1656.         ;;
  1657.     md)
  1658.         major=`Major md 9` || continue
  1659.         for part in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 \
  1660.             16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
  1661.         do
  1662.             makedev md$part b $major $part $disk
  1663.         done
  1664.         ;;
  1665.     st[0-7])
  1666.         major=`Major st 9`
  1667.         unit=`suffix $arg st`
  1668.         makedev st${unit}   c $major $unit $tape
  1669.         makedev nst${unit}  c $major `math 128 + $unit` $tape
  1670.  
  1671.         makedev st${unit}l  c $major `math 32 + $unit` $tape
  1672.         makedev nst${unit}l c $major `math 160 + $unit` $tape
  1673.  
  1674.         makedev st${unit}m  c $major `math 64 + $unit` $tape
  1675.         makedev nst${unit}m c $major `math 192 + $unit` $tape
  1676.  
  1677.         makedev st${unit}a  c $major `math 96 + $unit` $tape
  1678.         makedev nst${unit}a c $major `math 224 + $unit` $tape
  1679.         ;;
  1680.     qic)
  1681.         major=`Major tpqic02 12`
  1682.         makedev ntpqic11   c $major   2 $tape
  1683.         makedev tpqic11    c $major   3 $tape
  1684.         makedev ntpqic24   c $major   4 $tape
  1685.         makedev tpqic24    c $major   5 $tape
  1686.         makedev ntpqic120  c $major   6 $tape
  1687.         makedev tpqic120   c $major   7 $tape
  1688.         makedev ntpqic150  c $major   8 $tape
  1689.         makedev tpqic150   c $major   9 $tape
  1690.         makedev rmt8       c $major   6 $tape
  1691.         makedev rmt16      c $major   8 $tape
  1692.         makedev tape-d     c $major 136 $tape
  1693.         makedev tape-reset c $major 255 $tape
  1694.         $0 $opts qft
  1695.         ;;
  1696.     ftape)
  1697.         major=`Major qft 27` || continue
  1698.         for unit in 0 1 2 3
  1699.         do
  1700.             makedev qft$unit     c $major $unit $tape
  1701.             makedev nqft$unit    c $major `math $unit + 4` $tape
  1702.             makedev zqft$unit    c $major `math $unit + 16` $tape
  1703.             makedev nzqft$unit   c $major `math $unit + 20` $tape
  1704.             makedev rawqft$unit  c $major `math $unit + 32` $tape
  1705.             makedev nrawqft$unit c $major `math $unit + 36` $tape
  1706.         done
  1707.         symlink ftape qft0
  1708.         symlink nftape nqft0
  1709.         ;;
  1710.     sr|scd|scd-all)
  1711.         major=`Major sr 11` || continue
  1712.         for unit in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
  1713.         do
  1714.             makedev scd$unit b $major $unit $cdrom
  1715.             symlink sr$unit scd$unit
  1716.         done
  1717.         ;;
  1718.     pktcdvd)
  1719.         echo "pktcdvd major number is now dynamic, taking no action"
  1720.     #    major=97
  1721.     #    for unit in 0 1 2 3
  1722.     #    do
  1723.     #        makedev pktcdvd$unit b $major $unit $cdrom
  1724.     #    done
  1725.         ;;
  1726.     cfs0)
  1727.         makedev cfs0 c 67 0 $coda
  1728.         ;;
  1729.     scd[0-9]|scd[0-1][0-9])
  1730.         major=`Major sr 11` || continue
  1731.         unit=`suffix $arg scd`
  1732.         makedev scd$unit b $major $unit $cdrom
  1733.         symlink sr$unit scd$unit 
  1734.         ;;
  1735.     ttyI[0-9]|ttyI[1-5][0-9]|ttyI[6][0-3])
  1736.         major=43
  1737.         unit=`suffix $arg ttyI`
  1738.         makedev ttyI$unit c $major $unit $dialout
  1739.         ;;
  1740.     ppp)
  1741.         major=108
  1742.         makedev ppp c $major 0 $dip
  1743.         ;;
  1744.     ippp[0-9]|ippp[1-5][0-9]|ippp[6][0-3])
  1745.         major=45
  1746.         unit=`suffix $arg ippp`
  1747.         minor=`math $unit + 128`
  1748.         makedev ippp$unit c $major $minor $dialout
  1749.         ;;
  1750.     isdn[0-9]|isdn[1-5][0-9]|isdn[6][0-3])
  1751.         major=45
  1752.         unit=`suffix $arg isdn`
  1753.         minor=`math $unit + 0`
  1754.         makedev isdn$unit c $major $minor $dialout
  1755.         ;;
  1756.     isdnctrl[0-9]|isdnctrl[1-5][0-9]|isdnctrl[6][0-3])
  1757.         major=45
  1758.         unit=`suffix $arg isdnctrl`
  1759.         minor=`math $unit + 64`
  1760.         makedev isdnctrl$unit c $major $minor $dialout
  1761.         ;;
  1762.     isdninfo)
  1763.         makedev isdninfo c 45 255 $private
  1764.         ;;
  1765.     isdn-tty)
  1766.         major=43
  1767.         for unit in 0 1 2 3 4 5 6 7
  1768.         do
  1769.             makedev ttyI$unit c $major $unit $dialout
  1770.         done
  1771.         ;;
  1772.     isdn-ippp)
  1773.         major=45
  1774.         for unit in 0 1 2 3 4 5 6 7
  1775.         do
  1776.             makedev ippp$unit c $major `math $unit + 128` $dialout
  1777.         done
  1778.         ;;
  1779.     isdn-io)
  1780.         for unit in 0 1 2 3 4 5 6 7
  1781.         do
  1782.             makedev isdn$unit c 45 $unit $dialout
  1783.             makedev isdnctrl$unit c 45 `math $unit + 64` $dialout
  1784.             makedev ippp$unit c 45 `math $unit + 128` $dialout
  1785.         done
  1786.         makedev isdninfo c 45 255 $dialout
  1787.         ;;
  1788.     sonycd)
  1789.         major=`Major sonycd 15` || continue
  1790.         makedev $arg b $major 0 $cdrom
  1791.         ;;
  1792.     mcd)
  1793.         major=`Major mcd 23` || continue
  1794.         makedev $arg b $major 0 $cdrom
  1795.         ;;
  1796.     mcdx|mcdx[0-4])
  1797.         major=`Major $arg 20` || continue
  1798.         for unit in 0 1 2 3 4
  1799.         do
  1800.             makedev mcdx$unit b $major $unit $cdrom
  1801.         done
  1802.         test -r mcdx || symlink mcdx mcdx0
  1803.         ;;
  1804.     cdu535)
  1805.         makedev $arg b 24 0 $cdrom
  1806.         ;;
  1807.     lmscd)
  1808.         makedev $arg b 24 0 $cdrom
  1809.         ;;
  1810.     sbpcd|sbpcd[123])
  1811.         major=`Major $arg 25` || continue
  1812.         base=`suffix ${arg}0 sbpcd`
  1813.         for minor in 0 1 2 3
  1814.         do
  1815.             # XXX
  1816.             unit=$(substr 0123456789abcdef $(( $base * 4 + $minor + 1 )) )
  1817.             makedev sbpcd$unit b $major $minor $cdrom
  1818.         done
  1819.         [ $arg = sbpcd ] && symlink $arg ${arg}0
  1820.         ;;
  1821.     aztcd)
  1822.         major=`Major $arg 29` || continue
  1823.         makedev ${arg}0 b $major 0 $cdrom
  1824.         ;;
  1825.     cm206cd)
  1826.         major=`Major $arg 30` || continue
  1827.         makedev ${arg}0 b $major 0 $cdrom
  1828.         ;;
  1829.     gscd)
  1830.         major=`Major $arg 16` || continue
  1831.         makedev ${arg}0 b $major 0 $cdrom
  1832.         ;;
  1833.     pcd)
  1834.         for unit in 0 1 2 3 
  1835.         do
  1836.             makedev pcd$unit b 46 $unit $cdrom
  1837.         done
  1838.         ;;
  1839.     bpcd)
  1840.         makedev $arg b 41 0 $cdrom
  1841.         ;;
  1842.     optcd)
  1843.         makedev $arg b 17 0 $cdrom
  1844.         ;;
  1845.     sjcd)
  1846.         makedev $arg b 18 0 $cdrom
  1847.         ;;
  1848.     cfs|coda)
  1849.         makedev cfs0 c 67 0 $private
  1850.         ;;
  1851.     xfs|nnpfs|arla)
  1852.         makedev xfs0 c 103 0 $private
  1853.         makedev nnpfs0 c 103 0 $private
  1854.         ;;
  1855.     logiscan)
  1856.         major=`Major logiscan` || continue
  1857.         makedev $arg c $major 0 $scanner
  1858.         ;;
  1859.     toshiba)
  1860.         major=`Major $arg 10` || continue
  1861.         makedev $arg c $major 181 root root 0666
  1862.         ;;
  1863.     m105scan)
  1864.         major=`Major m105` || continue
  1865.         makedev $arg c $major 0 $scanner
  1866.         ;;
  1867.     ac4096)
  1868.         major=`Major ac4096` || continue
  1869.         makedev $arg c $major 0 $scanner
  1870.         ;;
  1871.     audio)
  1872.         major=`Major sound 14`
  1873.         makedev mixer      c $major  0 $audio
  1874.         makedev mixer1     c $major 16 $audio
  1875.         makedev mixer2     c $major 32 $audio
  1876.         makedev mixer3     c $major 48 $audio
  1877.         makedev sequencer  c $major  1 $audio
  1878.         makedev midi00     c $major  2 $audio
  1879.         makedev midi01     c $major 18 $audio
  1880.         makedev midi02     c $major 34 $audio
  1881.         makedev midi03     c $major 50 $audio
  1882.         makedev dsp        c $major  3 $audio
  1883.         makedev dsp1       c $major 19 $audio
  1884.         makedev dsp2       c $major 35 $audio
  1885.         makedev dsp3       c $major 51 $audio
  1886.         makedev audio      c $major  4 $audio
  1887.         makedev audio1     c $major 20 $audio
  1888.         makedev audio2     c $major 36 $audio
  1889.         makedev audio3     c $major 52 $audio
  1890.         makedev sndstat    c $major  6 $audio
  1891.         makedev audioctl   c $major  7 $audio
  1892.         major=31
  1893.         makedev mpu401data c $major 0  $audio
  1894.         makedev mpu401stat c $major 1  $audio
  1895.         major=35
  1896.         for i in 0 1 2 3
  1897.         do
  1898.             makedev midi$i  c $major $i $audio
  1899.             makedev rmidi$i c $major `math $i + 64` $audio
  1900.             makedev smpte$i c $major `math $i + 128` $audio
  1901.         done
  1902.         ;;
  1903.     pcaudio)
  1904.         major=`Major pcsp 13` || continue
  1905.         makedev pcmixer c $major 0 $audio
  1906.         makedev pcsp    c $major 3 $audio
  1907.         makedev pcaudio c $major 4 $audio
  1908.         ;;
  1909.     video|video4linux|v4l|radio)
  1910.         # video4linux api includes radio, teletext, etc.
  1911.         major=`Major video 81` || continue
  1912.         minor=0
  1913.         until [ $minor -gt 63 ]
  1914.         do
  1915.             makedev video$minor c $major $minor $video
  1916.             makedev radio$minor c $major `math $minor + 64` $video
  1917.             minor=`math $minor + 1`
  1918.         done
  1919.         symlink radio radio0
  1920.         minor=0
  1921.         until [ $minor -gt 31 ]
  1922.         do
  1923.             makedev vtx$minor c $major `math $minor + 192` $video
  1924.             makedev vbi$minor c $major `math $minor + 224` $video
  1925.             minor=`math $minor + 1`
  1926.         done
  1927.         symlink video video0
  1928.         symlink vbi vbi0
  1929.         major=82
  1930.         minor=0
  1931.         until [ $minor -gt 1 ]
  1932.         do
  1933.             makedev winradio$minor c $major $minor $video
  1934.             minor=`math $minor + 1`
  1935.         done
  1936.         major=83
  1937.         makedev vtx     c $major 0 $video
  1938.         makedev vttuner c $major 16 $video
  1939.         ;;
  1940.     i2c)
  1941.         # making it possible to create an arbitrary number of i2c
  1942.         # devices might be good, but 8 should suffice for now
  1943.         major=`Major i2c 89` || continue
  1944.         minor=0
  1945.         until [ $minor -gt 7 ] 
  1946.         do
  1947.             makedev i2c-$minor c $major $minor $private
  1948.             minor=`math $minor + 1`
  1949.         done
  1950.         ;;
  1951.     tlk)
  1952.         major=102
  1953.         minor=0
  1954.         until [ $minor -gt 3 ] # tell me if 3 is wrong...
  1955.         do
  1956.             makedev tlk$minor c $major $minor $video
  1957.             minor=`math $minor + 1`
  1958.         done
  1959.         ;;
  1960.     srnd)
  1961.         makedev srnd0 c 110 0 $video
  1962.         makedev srnd1 c 110 1 $video
  1963.         ;;
  1964.     fgrab)
  1965.         makedev mmetfgrab c 40 0 $video
  1966.         makedev wvisfgrab c 26 0 $video
  1967.         for i in 0 1 # more?
  1968.         do
  1969.             makedev iscc$i    c 93 $i $video
  1970.             makedev isccctl$i c 93 `math $i + 128` $video
  1971.         done
  1972.         for i in 0 1 # more?
  1973.         do
  1974.             makedev dcxx$i c 94 $i $video
  1975.         done
  1976.         ;;
  1977.     sg|sg-all)
  1978.         major=`Major sg 21`
  1979.         for unit in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
  1980.         do
  1981.             makedev sg$unit c $major $unit $scsi
  1982.         done
  1983.         ;;
  1984.     pg)
  1985.         major=`Major pg 97`
  1986.         for unit in 0 1 2 3
  1987.         do
  1988.             makedev pg$unit c $major $unit $scsi
  1989.         done
  1990.         ;;
  1991.     fd)
  1992.         # not really devices, we use the /proc filesystem
  1993.         symlink fd     $procfs/self/fd
  1994.         symlink stdin  fd/0
  1995.         symlink stdout fd/1
  1996.         symlink stderr fd/2
  1997.         ;;
  1998.     ibcs2)
  1999.         major=`Major ibcs2 30` || continue
  2000.         makedev socksys c $major 0 $ibcs2
  2001.         symlink nfsd socksys
  2002.         makedev spx     c $major 1 $ibcs2
  2003.         symlink X0R null
  2004.         ;;
  2005.     netlink)
  2006.         major=36
  2007.         makedev route c $major 0 $private
  2008.         makedev skip  c $major 1 $private
  2009.         ;;
  2010.     enskip)
  2011.         major=64
  2012.         makedev enskip c $major 0 $private
  2013.         ;;
  2014.     ipfilt*)
  2015.         major=95
  2016.         makedev ipl     c $major 0 $private
  2017.         makedev ipnat   c $major 1 $private
  2018.         makedev ipstate c $major 2 $private
  2019.         makedev ipauth  c $major 3 $private
  2020.         ;;
  2021.     qng)
  2022.         makedev qng c 77 0 $private
  2023.         ;;
  2024.     apm)
  2025.         major=`Major mouse 10` || continue
  2026.         makedev apm_bios  c $major 134 $mouse
  2027.         ;;
  2028.     dcf)
  2029.         major=`Major dcf` || continue
  2030.         makedev $arg c $major 0 $system
  2031.         ;;
  2032.     helloworld)
  2033.         major=`Major hw` || continue
  2034.         makedev helloworld c $major 0 $public
  2035.         ;;
  2036.     ipsec)
  2037.         # For the Free S/WAN (http://www.xs4all.nl/~freeswan/)
  2038.         # implementation of IPSEC
  2039.         makedev ipsec c 36 10 $ipsec
  2040.         ;;
  2041.     comedi)
  2042.         major=98
  2043.         for minor in 0 1 2 3
  2044.         do
  2045.             makedev comedi$minor c $major $minor $public
  2046.         done
  2047.         ;;
  2048.     tilp)
  2049.         for i in `seq 0 7`
  2050.         do
  2051.             makedev tipar$i c 115 $i $printer
  2052.             makedev tiser$i c 115 `math 8 + $i` $dialout
  2053.         done
  2054.         for i in `seq 0 31`
  2055.         do
  2056.             makedev tiusb$i c 115 `math 16 + $i` $dialout
  2057.         done
  2058.         ;;
  2059.     dvb)
  2060.         # check if kernel-version is >= 2.6.8, if yes, create dvb-devices with
  2061.         # major-number 212, in the other case 250
  2062.         
  2063.         kern_rev1=`uname -r | sed -e 's@^\([^.]*\)\..*@\1@'`
  2064.         kern_rev2=`uname -r | sed -e 's@^[^.]*\.\([^.]*\)\..*@\1@'`
  2065.         kern_rev3=`uname -r | sed -e 's@^[^.]*\.[^.]*\.\([^.][0-9]*\).*@\1@'`
  2066.       
  2067.         dvb_major=250
  2068.  
  2069.         if [ $kern_rev1 -gt 2 ] || ([ $kern_rev1 -eq 2 ] && [ $kern_rev2 -gt 6 ]) \
  2070.             || ([ $kern_rev1 -eq 2 ] && [ $kern_rev2 -eq 6 ] && [ $kern_rev3 -ge 8 ])
  2071.         then 
  2072.             dvb_major=212 
  2073.         fi
  2074.  
  2075.         mkdir -p dvb
  2076.         for i in 0 1 2 3
  2077.         do
  2078.             mkdir -p dvb/adapter$i
  2079.             makedev dvb/adapter$i/video0    c $dvb_major `math 64 \* $i + 0` $video
  2080.             makedev dvb/adapter$i/audio0    c $dvb_major `math 64 \* $i + 1` $video
  2081.             makedev dvb/adapter$i/frontend0 c $dvb_major `math 64 \* $i + 3` $video
  2082.             makedev dvb/adapter$i/demux0    c $dvb_major `math 64 \* $i + 4` $video
  2083.             makedev dvb/adapter$i/dvr0      c $dvb_major `math 64 \* $i + 5` $video
  2084.             makedev dvb/adapter$i/ca0       c $dvb_major `math 64 \* $i + 6` $video
  2085.             makedev dvb/adapter$i/net0      c $dvb_major `math 64 \* $i + 7` $video
  2086.             makedev dvb/adapter$i/osd0      c $dvb_major `math 64 \* $i + 8` $video
  2087.         done
  2088.         ;;
  2089.     usb)
  2090.         mkdir -p usb
  2091.         major=180
  2092.         for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  2093.         do
  2094.             makedev usb/lp$i c $major $i $printer
  2095.             makedev usb/mouse$i c $major `math $i + 16` $mouse
  2096.             makedev usb/ez$i c $major `math $i + 32` $system
  2097.             makedev usb/scanner$i c $major `math $i + 48` $scanner
  2098.             makedev usb/hiddev$i c $major `math $i + 96` $system
  2099.             makedev ttyACM$i c 166 $i $dialout
  2100.             makedev ttyUSB$i c 188 $i $dialout
  2101.         done
  2102.         makedev usb/rio500 c $major 64 $audio
  2103.         makedev usb/usblcd c $major 65 $audio
  2104.         makedev usb/cpad0 c $major 66 $audio
  2105.         ;;
  2106.     bluetooth)
  2107.         major=216
  2108.         for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 \
  2109.             16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
  2110.         do
  2111.             makedev rfcomm$i c $major $i $dialout
  2112.         done
  2113.         makedev vhci c 10 250 $dialout
  2114.         for i in 0 1 2 3; do
  2115.             makedev ttyUB$i c 216 $i $dialout
  2116.             makedev ccub$i c 217 $i $dialout
  2117.         done
  2118.         ;;
  2119.     paride)
  2120.                 major=45
  2121.                 for unit in a b c d
  2122.         do
  2123.                     base=`index abcd $unit`
  2124.                     base=`math $base \* 16`
  2125.                     makedev pd$unit b $major $base $disk
  2126.                     for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  2127.                     do
  2128.             makedev pd$unit$part b $major $(( $base + $part )) $disk
  2129.                     done
  2130.         done
  2131.         for i in 0 1 2 3
  2132.         do
  2133.             makedev pcd$i b 46 $i $cdrom
  2134.             makedev pf$i  b 47 $i $floppy
  2135.         done
  2136.                 ;;
  2137.         lirc)
  2138.                 makedev lirc c 61 0 $lirc
  2139.                 for i in d m; do
  2140.                    makefifo lirc${i} $lirc
  2141.                 done
  2142.                 ;;
  2143.     update)
  2144.         devices=
  2145.         if [ ! -f $procfs/devices ]
  2146.         then
  2147.             echo "$0: warning: can't read $procfs/devices" >&2
  2148.         else
  2149.             exec 3<$procfs/devices
  2150.             while read major device extra <&3
  2151.             do
  2152.                 device=`echo $device | sed 's#/.*##'`
  2153.                 case "$major" in
  2154.                     Character|Block|'')
  2155.                         ;;
  2156.                     *)
  2157.                         eval "major_$device=$major"
  2158.                         devices="$devices $device"
  2159.                         ;;
  2160.                 esac
  2161.             done
  2162.             exec 3<&-
  2163.         fi
  2164.  
  2165.         if [ ! "$devices" ]
  2166.         then
  2167.             echo "$0: don't appear to have any devices" >&2
  2168.             continue
  2169.         fi
  2170.         if [ "$opt_d" ]
  2171.         then
  2172.             echo "$0: can't delete an update" >&2
  2173.             continue
  2174.         fi
  2175.         create=
  2176.         delete=
  2177.         devs="$devices"
  2178.         if [ -f DEVICES ]
  2179.         then
  2180.             exec 3<DEVICES
  2181.             while read device major <&3
  2182.             do
  2183.                 eval now=\$major_$device
  2184.                 if [ "$now" = "" ]
  2185.                 then
  2186.                     delete="$delete `cvt $device`"
  2187.                     continue
  2188.                 elif [ "$now" != $major ]
  2189.                 then
  2190.                     create="$create "`cvt $device`
  2191.                 fi
  2192.                 devs=`strip " $devs " $device`
  2193.             done
  2194.             exec 3<&-
  2195.         fi
  2196.         create="$create "`cvt $devs`
  2197.         [ "$delete" != "" ] && $0 $opts -d $delete
  2198.         [ "$create" != " " ] && $0 $opts $create
  2199.         [ "$opt_n" ] && continue
  2200.         for device in $devices
  2201.         do
  2202.             if [ "`cvt $device`" ]
  2203.             then
  2204.                 eval echo $device \$major_$device
  2205.             fi
  2206.         done > DEVICES
  2207.         ;;
  2208.     *)
  2209.         echo "$0: don't know how to make device \"$arg\"" >&2
  2210.         exit 1
  2211.         ;;
  2212.     esac
  2213. done
  2214.  
  2215. exit 0
  2216.